package com.lundao.collect.mapper;

import java.util.List;
import java.util.Map;

import com.lundao.blog.domain.MyBlogData;
import com.lundao.collect.domain.Collect;
import org.apache.ibatis.annotations.MapKey;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

/**
 * 博客收藏Mapper接口
 * 
 * @author lundao
 * @date 2025-09-14
 */
@Mapper
public interface CollectMapper {
    /**
     * 查询博客收藏
     *
     * @param collectId 博客收藏主键
     * @return 博客收藏
     */
    public Collect selectCollectByCollectId(String collectId);

    /**
     * 查询博客收藏列表
     *
     * @param collect 博客收藏
     * @return 博客收藏集合
     */
    public List<Collect> selectCollectList(Collect collect);
    /**
     * 批量查询收藏数
     * @param blogIds
     */
//    @MapKey("blogId") //使用blogId作为返回Map的key
//    Map<String, Map<String, Object>> batchSelectCollectCount(@Param("blogIds") List<String> blogIds);

    /**
     * 新增博客收藏
     *
     * @param collect 博客收藏
     * @return 结果
     */
    public int insertCollect(Collect collect);

    /**
     * 修改博客收藏
     *
     * @param collect 博客收藏
     * @return 结果
     */
    public int updateCollect(Collect collect);

    /**
     * 删除博客收藏
     *
     * @param collectId 博客收藏主键
     * @return 结果
     */
    public int deleteCollectByCollectId(String collectId);

    /**
     * 批量删除博客收藏
     *
     * @param collectIds 需要删除的数据主键集合
     * @return 结果
     */
    public int deleteCollectByCollectIds(String[] collectIds);
    /**
     * 根据userId和blogId删除博客收藏
     * @param userId
     * @param blogId
     * @return
     */
    int deleteCollectByUserIdAndBlogId(@Param("userId") Integer userId, @Param("blogId") String blogId);
    /**
     * @param blogId
     * @return
     */
     public int selectCollectCount(String blogId) ;
    /**
     * 批量查询收藏数
     * @param blogIds
     */
    @MapKey("blogId") //使用blogId作为返回Map的key
    Map<String, Map<String, Object>> batchSelectCollectCount(@Param("blogIds") List<String> blogIds);
    /**
     * 根据userId和blogId删除博客收藏
     * @param userId
     * @param blogId
     * @return
     */
    int selectCollectByUserIdAndBlogId(@Param("userId") Integer userId, @Param("blogId") String blogId);

    /**
     * 查询当前登录用户的博客数据
     * @param userId
     * @return
     */
    MyBlogData selectBlogDataByUserId(@Param("userId") Integer userId);
}

